using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._RasterAnalysisTools._SummarizeData
{
    /// <summary>
    /// <para>Zonal Statistics As Table</para>
    /// <para>Calculates the values of a raster within the zones of another dataset and reports the results to a table.</para>
    /// <para>计算另一个数据集区域内的栅格值，并将结果报告给表。</para>
    /// </summary>    
    [DisplayName("Zonal Statistics As Table")]
    public class ZonalStatisticsAsTable : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public ZonalStatisticsAsTable()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_inputZoneRasterOrFeatures">
        /// <para>Input Zone Raster or Features</para>
        /// <para><xdoc>
        ///   <para>The input that defines the zones.</para>
        ///   <para>Both raster and feature data can be used for the zone input.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>定义区域的输入。</para>
        ///   <para>栅格数据和要素数据都可用于区域输入。</para>
        /// </xdoc></para>
        /// </param>
        /// <param name="_inputValueRaster">
        /// <para>Input Value Raster</para>
        /// <para>The raster that contains the values on which to summarize a statistic.</para>
        /// <para>包含要汇总统计数据的值的栅格。</para>
        /// </param>
        /// <param name="_outputTableName">
        /// <para>Output Table Name</para>
        /// <para><xdoc>
        ///   <para>The name of the output table.</para>
        ///   <para>If the table already exists, you will be prompted to provide another name.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>输出表的名称。</para>
        ///   <para>如果该表已存在，系统将提示您提供另一个名称。</para>
        /// </xdoc></para>
        /// </param>
        /// <param name="_zoneField">
        /// <para>Zone Field</para>
        /// <para><xdoc>
        ///   <para>The field that defines each zone.</para>
        ///   <para>It can be an integer or a string field of the zone dataset.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>定义每个区域的字段。</para>
        ///   <para>它可以是区域数据集的整数或字符串字段。</para>
        /// </xdoc></para>
        /// </param>
        public ZonalStatisticsAsTable(object _inputZoneRasterOrFeatures, object _inputValueRaster, object _outputTableName, object _zoneField)
        {
            this._inputZoneRasterOrFeatures = _inputZoneRasterOrFeatures;
            this._inputValueRaster = _inputValueRaster;
            this._outputTableName = _outputTableName;
            this._zoneField = _zoneField;
        }
        public override string ToolboxName => "Raster Analysis Tools";

        public override string ToolName => "Zonal Statistics As Table";

        public override string CallName => "ra.ZonalStatisticsAsTable";

        public override List<string> AcceptEnvironments => ["cellSize", "extent", "mask", "outputCoordinateSystem", "snapRaster"];

        public override object[] ParameterInfo => [_inputZoneRasterOrFeatures, _inputValueRaster, _outputTableName, _zoneField, _ignoreNodata.GetGPValue(), _statisticType.GetGPValue(), _percentileValues, _processAsMultidimensional.GetGPValue(), _outputTable, _percentileInterpolationType.GetGPValue()];

        /// <summary>
        /// <para>Input Zone Raster or Features</para>
        /// <para><xdoc>
        ///   <para>The input that defines the zones.</para>
        ///   <para>Both raster and feature data can be used for the zone input.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>定义区域的输入。</para>
        ///   <para>栅格数据和要素数据都可用于区域输入。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Zone Raster or Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _inputZoneRasterOrFeatures { get; set; }


        /// <summary>
        /// <para>Input Value Raster</para>
        /// <para>The raster that contains the values on which to summarize a statistic.</para>
        /// <para>包含要汇总统计数据的值的栅格。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Value Raster")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _inputValueRaster { get; set; }


        /// <summary>
        /// <para>Output Table Name</para>
        /// <para><xdoc>
        ///   <para>The name of the output table.</para>
        ///   <para>If the table already exists, you will be prompted to provide another name.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>输出表的名称。</para>
        ///   <para>如果该表已存在，系统将提示您提供另一个名称。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Table Name")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _outputTableName { get; set; }


        /// <summary>
        /// <para>Zone Field</para>
        /// <para><xdoc>
        ///   <para>The field that defines each zone.</para>
        ///   <para>It can be an integer or a string field of the zone dataset.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>定义每个区域的字段。</para>
        ///   <para>它可以是区域数据集的整数或字符串字段。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Zone Field")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _zoneField { get; set; }


        /// <summary>
        /// <para>Ignore Nodata</para>
        /// <para><xdoc>
        ///   <para>Specifies whether NoData values in the value input will be ignored in the results of the zone that they fall within.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—Within any particular zone, only cells that have a value in the input value raster will be used in determining the output value for that zone. NoData cells in the value raster will be ignored in the statistic calculation. This is the default.</bullet_item><para/>
        ///     <bullet_item>Unchecked—Within any particular zone, if NoData cells exist in the value raster, they will not be ignored and their existence indicates that there is insufficient information to perform statistical calculations for all the cells in that zone. Consequently, the entire zone will receive the NoData value on the output raster.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定值输入中的 NoData 值是否在它们所属区域的结果中被忽略。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 - 在任何特定区域内，仅使用输入值栅格中具有值的像元来确定该区域的输出值。值栅格中的 NoData 像元将在统计数据计算中被忽略。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>未选中 - 在任何特定区域内，如果值栅格中存在 NoData 像元，则不会忽略它们，并且它们的存在表明没有足够的信息来对该区域中的所有像元执行统计计算。因此，整个区域将接收输出栅格上的 NoData 值。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Ignore Nodata")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _ignoreNodata_value _ignoreNodata { get; set; } = _ignoreNodata_value._false;

        public enum _ignoreNodata_value
        {
            /// <summary>
            /// <para>NODATA</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NODATA")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>DATA</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("DATA")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Statistic Type</para>
        /// <para><xdoc>
        ///   <para>Specifies the statistic type to calculate.</para>
        ///   <para>The available options when the value raster is integer are All, Mean, Majority, Maximum, Median, Minimum, Minority, Percentile, Range, Standard deviation, Sum, Variety, Minimum and Maximum, Mean and Standard deviation, and Minimum, Maximum and Mean.</para>
        ///   <para>If the value raster is float, the options are All, Mean, Maximum, Median, Percentile, Minimum, Range, Standard deviation, and Sum.</para>
        ///   <bulletList>
        ///     <bullet_item>All—All of the statistics will be calculated for an integer type value raster. All statistics except Median and Percentile will be calculated for a floating-point type value raster. This is the default.</bullet_item><para/>
        ///     <bullet_item>Mean—The mean of all cells in the raster layer to be summarized that belong to the same zone as the output cell will be calculated.</bullet_item><para/>
        ///     <bullet_item>Majority—The value that occurs most often of all cells in the raster layer to be summarized that belong to the same zone as the output cell will be calculated.</bullet_item><para/>
        ///     <bullet_item>Maximum—The largest value of all cells in the raster layer to be summarized that belong to the same zone as the output cell will be calculated.</bullet_item><para/>
        ///     <bullet_item>Median—The median value of all cells in the raster layer to be summarized that belong to the same zone as the output cell will be calculated.</bullet_item><para/>
        ///     <bullet_item>Minimum—The smallest value of all cells in the raster layer to be summarized that belong to the same zone as the output cell will be calculated.</bullet_item><para/>
        ///     <bullet_item>Minority—The value that occurs least often of all cells in the raster layer to be summarized that belong to the same zone as the output cell will be calculated.</bullet_item><para/>
        ///     <bullet_item>Percentile—The percentile of all cells in the value raster that belong to the same zone as the output cell will be calculated. The 90th percentile is calculated by default. You can specify other values (from 0 to 100) using the Percentile Values parameter.</bullet_item><para/>
        ///     <bullet_item>Range—The difference between the largest and smallest value of all cells in the raster layer to be summarized that belong to the same zone as the output cell will be calculated.</bullet_item><para/>
        ///     <bullet_item>Standard deviation—The standard deviation of all cells in the raster layer to be summarized that belong to the same zone as the output cell will be calculated.</bullet_item><para/>
        ///     <bullet_item>Sum—The total value of all cells in the raster layer to be summarized that belong to the same zone as the output cell will be calculated.</bullet_item><para/>
        ///     <bullet_item>Variety—The number of unique values for all cells in the raster layer to be summarized that belong to the same zone as the output cell will be calculated.</bullet_item><para/>
        ///     <bullet_item>Minimum and Maximum—Both the minimum and maximum statistics will be calculated.</bullet_item><para/>
        ///     <bullet_item>Mean and Standard deviation—Both the mean and standard deviation statistics will be calculated.</bullet_item><para/>
        ///     <bullet_item>Minimum, Maximum and Mean—The minimum, maximum, and mean statistics will be calculated.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定要计算的统计信息类型。</para>
        ///   <para>当值栅格为整数时，可用选项包括全部、平均值、多数、最大值、中位数、最小值、少数、百分位数、范围、标准差、总和、多样性、最小值和最大值、平均值和标准差以及最小值、最大值和平均值。</para>
        ///   <para>如果值栅格为浮点值，则选项为全部、平均值、最大值、中位数、百分位数、最小值、范围、标准差和总和。</para>
        ///   <bulletList>
        ///     <bullet_item>全部—将针对整数类型值栅格计算所有统计数据。将针对浮点类型值栅格计算除中位数和百分位数之外的所有统计数据。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>平均值—将计算要汇总的栅格图层中与输出像元属于同一区域的所有像元的平均值。</bullet_item><para/>
        ///     <bullet_item>多数 - 将计算要汇总的栅格图层中与输出像元属于同一区域的所有像元中出现频率最高的值。</bullet_item><para/>
        ///     <bullet_item>最大值 - 将计算栅格图层中要汇总且与输出像元属于同一区域的所有像元的最大值。</bullet_item><para/>
        ///     <bullet_item>中位数—将计算要汇总的栅格图层中与输出像元属于同一区域的所有像元的中值。</bullet_item><para/>
        ///     <bullet_item>最小值 - 将计算要汇总的栅格图层中与输出像元属于同一区域的所有像元的最小值。</bullet_item><para/>
        ///     <bullet_item>少数 - 将计算要汇总的栅格图层中与输出像元属于同一区域的所有像元中出现频率最低的值。</bullet_item><para/>
        ///     <bullet_item>百分位数—将计算值栅格中与输出像元属于同一区域的所有像元的百分位数。默认情况下计算第 90 个百分位数。您可以使用百分位数值参数指定其他值（从 0 到 100）。</bullet_item><para/>
        ///     <bullet_item>范围—将计算要汇总的栅格图层中与输出像元属于同一区域的所有像元的最大值和最小值之间的差值。</bullet_item><para/>
        ///     <bullet_item>标准差—将计算待汇总的栅格图层中与输出像元属于同一区域的所有像元的标准差。</bullet_item><para/>
        ///     <bullet_item>总和—将计算待汇总的栅格图层中与输出像元属于同一区域的所有像元的总值。</bullet_item><para/>
        ///     <bullet_item>多样性—将计算要汇总的栅格图层中与输出像元属于同一区域的所有像元的唯一值数。</bullet_item><para/>
        ///     <bullet_item>最小值和最大值—将同时计算最小值和最大值统计数据。</bullet_item><para/>
        ///     <bullet_item>均值和标准差—将计算均值和标准差统计数据。</bullet_item><para/>
        ///     <bullet_item>最小值、最大值和平均值—将计算最小值、最大值和平均值统计数据。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Statistic Type")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _statisticType_value _statisticType { get; set; } = _statisticType_value._ALL;

        public enum _statisticType_value
        {
            /// <summary>
            /// <para>All</para>
            /// <para>All—All of the statistics will be calculated for an integer type value raster. All statistics except Median and Percentile will be calculated for a floating-point type value raster. This is the default.</para>
            /// <para>全部—将针对整数类型值栅格计算所有统计数据。将针对浮点类型值栅格计算除中位数和百分位数之外的所有统计数据。这是默认设置。</para>
            /// </summary>
            [Description("All")]
            [GPEnumValue("ALL")]
            _ALL,

            /// <summary>
            /// <para>Mean</para>
            /// <para>Mean—The mean of all cells in the raster layer to be summarized that belong to the same zone as the output cell will be calculated.</para>
            /// <para>平均值—将计算要汇总的栅格图层中与输出像元属于同一区域的所有像元的平均值。</para>
            /// </summary>
            [Description("Mean")]
            [GPEnumValue("MEAN")]
            _MEAN,

            /// <summary>
            /// <para>Majority</para>
            /// <para>Majority—The value that occurs most often of all cells in the raster layer to be summarized that belong to the same zone as the output cell will be calculated.</para>
            /// <para>多数 - 将计算要汇总的栅格图层中与输出像元属于同一区域的所有像元中出现频率最高的值。</para>
            /// </summary>
            [Description("Majority")]
            [GPEnumValue("MAJORITY")]
            _MAJORITY,

            /// <summary>
            /// <para>Maximum</para>
            /// <para>Maximum—The largest value of all cells in the raster layer to be summarized that belong to the same zone as the output cell will be calculated.</para>
            /// <para>最大值 - 将计算栅格图层中要汇总且与输出像元属于同一区域的所有像元的最大值。</para>
            /// </summary>
            [Description("Maximum")]
            [GPEnumValue("MAXIMUM")]
            _MAXIMUM,

            /// <summary>
            /// <para>Median</para>
            /// <para>Median—The median value of all cells in the raster layer to be summarized that belong to the same zone as the output cell will be calculated.</para>
            /// <para>中位数—将计算要汇总的栅格图层中与输出像元属于同一区域的所有像元的中值。</para>
            /// </summary>
            [Description("Median")]
            [GPEnumValue("MEDIAN")]
            _MEDIAN,

            /// <summary>
            /// <para>Minimum</para>
            /// <para>Minimum—The smallest value of all cells in the raster layer to be summarized that belong to the same zone as the output cell will be calculated.</para>
            /// <para>最小值 - 将计算要汇总的栅格图层中与输出像元属于同一区域的所有像元的最小值。</para>
            /// </summary>
            [Description("Minimum")]
            [GPEnumValue("MINIMUM")]
            _MINIMUM,

            /// <summary>
            /// <para>Minority</para>
            /// <para>Minority—The value that occurs least often of all cells in the raster layer to be summarized that belong to the same zone as the output cell will be calculated.</para>
            /// <para>少数 - 将计算要汇总的栅格图层中与输出像元属于同一区域的所有像元中出现频率最低的值。</para>
            /// </summary>
            [Description("Minority")]
            [GPEnumValue("MINORITY")]
            _MINORITY,

            /// <summary>
            /// <para>Percentile</para>
            /// <para>Percentile—The percentile of all cells in the value raster that belong to the same zone as the output cell will be calculated. The 90th percentile is calculated by default. You can specify other values (from 0 to 100) using the Percentile Values parameter.</para>
            /// <para>百分位数—将计算值栅格中与输出像元属于同一区域的所有像元的百分位数。默认情况下计算第 90 个百分位数。您可以使用百分位数值参数指定其他值（从 0 到 100）。</para>
            /// </summary>
            [Description("Percentile")]
            [GPEnumValue("PERCENTILE")]
            _PERCENTILE,

            /// <summary>
            /// <para>Range</para>
            /// <para>Range—The difference between the largest and smallest value of all cells in the raster layer to be summarized that belong to the same zone as the output cell will be calculated.</para>
            /// <para>范围—将计算要汇总的栅格图层中与输出像元属于同一区域的所有像元的最大值和最小值之间的差值。</para>
            /// </summary>
            [Description("Range")]
            [GPEnumValue("RANGE")]
            _RANGE,

            /// <summary>
            /// <para>Standard deviation</para>
            /// <para>Standard deviation—The standard deviation of all cells in the raster layer to be summarized that belong to the same zone as the output cell will be calculated.</para>
            /// <para>标准差—将计算待汇总的栅格图层中与输出像元属于同一区域的所有像元的标准差。</para>
            /// </summary>
            [Description("Standard deviation")]
            [GPEnumValue("STD")]
            _STD,

            /// <summary>
            /// <para>Sum</para>
            /// <para>Sum—The total value of all cells in the raster layer to be summarized that belong to the same zone as the output cell will be calculated.</para>
            /// <para>总和—将计算待汇总的栅格图层中与输出像元属于同一区域的所有像元的总值。</para>
            /// </summary>
            [Description("Sum")]
            [GPEnumValue("SUM")]
            _SUM,

            /// <summary>
            /// <para>Variety</para>
            /// <para>Variety—The number of unique values for all cells in the raster layer to be summarized that belong to the same zone as the output cell will be calculated.</para>
            /// <para>多样性—将计算要汇总的栅格图层中与输出像元属于同一区域的所有像元的唯一值数。</para>
            /// </summary>
            [Description("Variety")]
            [GPEnumValue("VARIETY")]
            _VARIETY,

            /// <summary>
            /// <para>Minimum and Maximum</para>
            /// <para>Minimum and Maximum—Both the minimum and maximum statistics will be calculated.</para>
            /// <para>最小值和最大值—将同时计算最小值和最大值统计数据。</para>
            /// </summary>
            [Description("Minimum and Maximum")]
            [GPEnumValue("MIN_MAX")]
            _MIN_MAX,

            /// <summary>
            /// <para>Mean and Standard deviation</para>
            /// <para>Mean and Standard deviation—Both the mean and standard deviation statistics will be calculated.</para>
            /// <para>均值和标准差—将计算均值和标准差统计数据。</para>
            /// </summary>
            [Description("Mean and Standard deviation")]
            [GPEnumValue("MEAN_STD")]
            _MEAN_STD,

            /// <summary>
            /// <para>Minimum, Maximum and Mean</para>
            /// <para>Minimum, Maximum and Mean—The minimum, maximum, and mean statistics will be calculated.</para>
            /// <para>最小值、最大值和平均值—将计算最小值、最大值和平均值统计数据。</para>
            /// </summary>
            [Description("Minimum, Maximum and Mean")]
            [GPEnumValue("MIN_MAX_MEAN")]
            _MIN_MAX_MEAN,

        }

        /// <summary>
        /// <para>Percentile Values</para>
        /// <para><xdoc>
        ///   <para>The percentile to calculate. The default is 90, indicating the 90th percentile.</para>
        ///   <para>The values can range from 0 to 100. The 0th percentile is essentially equivalent to the minimum statistic, and the 100th percentile is equivalent to maximum. A value of 50 will produce essentially the same result as the median statistic.</para>
        ///   <para>This option is only available if the Statistic Type parameter is set to Percentile or All.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>要计算的百分位数。默认值为 90，表示第 90 个百分位数。</para>
        ///   <para>这些值的范围可以从 0 到 100。第 0 个百分位数基本等于最小统计量，第 100 个百分位数等于最大值。值为 50 将产生与中位数统计量基本相同的结果。</para>
        ///   <para>仅当统计类型参数设置为百分位数或全部时，此选项才可用。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Percentile Values")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _percentileValues { get; set; } = null;


        /// <summary>
        /// <para>Process as Multidimensional</para>
        /// <para><xdoc>
        ///   <para>Specifies how the input rasters will be processed if they are multidimensional.</para>
        ///   <bulletList>
        ///     <bullet_item>Unchecked—Statistics will be calculated from the current slice of the input multidimensional dataset. This is the default.</bullet_item><para/>
        ///     <bullet_item>Checked— Statistics will be calculated for all dimensions (such as time or depth) from all slices of the multidimensional input rasters.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定输入栅格为多维栅格时的处理方式。</para>
        ///   <bulletList>
        ///     <bullet_item>未选中—将根据输入多维数据集的当前剖面计算统计数据。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>选中- 将计算多维输入栅格所有剖面的所有维度（例如时间或深度）的统计数据。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Process as Multidimensional")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _processAsMultidimensional_value _processAsMultidimensional { get; set; } = _processAsMultidimensional_value._false;

        public enum _processAsMultidimensional_value
        {
            /// <summary>
            /// <para>ALL_SLICES</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ALL_SLICES")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>CURRENT_SLICE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("CURRENT_SLICE")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Output Table</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Table")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _outputTable { get; set; }


        /// <summary>
        /// <para>Percentile Interpolation Type</para>
        /// <para><xdoc>
        ///   <para>Specifies the method of percentile interpolation to be used when the number of values from the input raster to be calculated are even.</para>
        ///   <bulletList>
        ///     <bullet_item>Auto-detect—If the input value raster is of integer pixel type, the Nearest method is used. If the input value raster is of floating point pixel type, the Linear method is used. This is the default.</bullet_item><para/>
        ///     <bullet_item>Nearest—The nearest available value to the desired percentile is used.</bullet_item><para/>
        ///     <bullet_item>Linear—The weighted average of the two surrounding values from the desired percentile is used.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定当要计算的输入栅格中的值数为偶数时要使用的百分位插值方法。</para>
        ///   <bulletList>
        ///     <bullet_item>自动检测 - 如果输入值栅格为整数像素类型，则使用“最近”方法。如果输入值栅格为浮点像素类型，则使用线性方法。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>最近 - 使用最接近所需百分位数的可用值。</bullet_item><para/>
        ///     <bullet_item>线性—使用所需百分位数中两个周围值的加权平均值。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Percentile Interpolation Type")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _percentileInterpolationType_value _percentileInterpolationType { get; set; } = _percentileInterpolationType_value._AUTO_DETECT;

        public enum _percentileInterpolationType_value
        {
            /// <summary>
            /// <para>Auto-detect</para>
            /// <para>Auto-detect—If the input value raster is of integer pixel type, the Nearest method is used. If the input value raster is of floating point pixel type, the Linear method is used. This is the default.</para>
            /// <para>自动检测 - 如果输入值栅格为整数像素类型，则使用“最近”方法。如果输入值栅格为浮点像素类型，则使用线性方法。这是默认设置。</para>
            /// </summary>
            [Description("Auto-detect")]
            [GPEnumValue("AUTO_DETECT")]
            _AUTO_DETECT,

            /// <summary>
            /// <para>Nearest</para>
            /// <para>Nearest—The nearest available value to the desired percentile is used.</para>
            /// <para>最近 - 使用最接近所需百分位数的可用值。</para>
            /// </summary>
            [Description("Nearest")]
            [GPEnumValue("NEAREST")]
            _NEAREST,

            /// <summary>
            /// <para>Linear</para>
            /// <para>Linear—The weighted average of the two surrounding values from the desired percentile is used.</para>
            /// <para>线性—使用所需百分位数中两个周围值的加权平均值。</para>
            /// </summary>
            [Description("Linear")]
            [GPEnumValue("LINEAR")]
            _LINEAR,

        }

        public ZonalStatisticsAsTable SetEnv(object cellSize = null, object extent = null, object mask = null, object outputCoordinateSystem = null, object snapRaster = null)
        {
            base.SetEnv(cellSize: cellSize, extent: extent, mask: mask, outputCoordinateSystem: outputCoordinateSystem, snapRaster: snapRaster);
            return this;
        }

    }

}